Proposal by Andrei Chis for Extensible parsing and persistency for Pier

Proposed by Andrei Chis (profile, biography) Don't forget to submit this proposal to official Google Melange site too!


How will I do that project

With enthusiasm, style and agility. At the beginning of the project I will take some time to learn more about Pier(source code, test suites), the technologies on which it is based and familiarize with an environment for Smalltalk development.

For the first task I will start with identifying and understanding the hooks that need to be inserted into the Pier parser so that it will became easily extensible. As the framework used to rewrite the parser will be PetitParser the second step will be to learn it and do some prototypes of the parser.

Regarding the second task I will like to start by first looking into the current persistency mechanism from Pier. Afterwards I will try to find a solution in which each Pier component will be able to specify a persistency strategy. I would like to do these using meta-descriptions, but if it doesn’t apply I may use a hardcoded strategy.

During the project I would like to keep a close relation with the mentors and get feedback as often as possible so I will stay on track. I believe in clean code therefore I will respect the Smalltalk coding style and also I will write tests. The code I’m going to write will be highly covered by tests.

What methodologies will I use

For doing this project I will choose an incremental approach. As the project has two main tasks I would like to do it in three main iterations.

The first iteration will be one in which I’ll get to know the project and clarify the tasks that I have to do. I this phase I want to learn about Pier, about the other technologies it uses (Seaside, Magritte, Pharo, etc) and I would like to talk to the mentors and understand the tasks I have to complete. Also I will like to write one or two small plug-ins for Pier to learn more about its internal structure.

In the second and third iterations I will implement the two main tasks. During these iterations I will try to be as agile as I can. Each iteration will be split in cycles lasting for one or two weeks. During each cycle I will plan, write code, write tests and then talk with the mentors to obtain feedback and see how I am doing. Also in the iteration for extending the Pier parser I will use the prototyping model in order to develop the parser.

Suggested timeline and milestones

First iteration:

Deadline: 31 May

Milestones:

- get a clear view of Pier and of the other involved technologies

- understand and clarify the tasks

- create a development plan for the main two tasks

- write one or two small plug-ins for Pier

Extend Pier parser:

Deadline: 9 July

Milestones:

- identify the hooks needed to make the parser extensible

- get a clear view of the PetitParser framework

- create one or two prototypes of the parser

- rewrite the parser using PetitParser

- implement and add the necessary hooks

Implement a generic persistency mechanism:

Deadline: 13 August

Milestones:

- understand the current persistency mechanism in Pier

- find a suitable solutions for a persistency mechanism

- implement the mechanism

Where I see the risks

As I don’t have any experience with Smalltalk and Pier I am concern I may not take the best decisions during the project development regarding design and implementation.

How the results will look like

At the end of the project there should be

- a new parser that will allow hooks for syntax extension

- a mechanism that will permit structures to specify persistency strategies




Updated: 8.4.2010